Virtual machines can be provided in a computer to enhance flexibility and performance. A virtual machine typically refers to some arrangement of components (software and/or hardware) for virtualizing or emulating an actual computer, where the virtual machine can include an operating system (referred to as a “guest” operating system) and software applications. Virtual machines can allow different operating systems to be deployed on the same computer, such that applications written for different operating systems can be executed in different virtual machines (that contain corresponding operating systems) in the same computer.
In a virtualized environment that includes virtual machines, a virtual machine monitor (VMM), also referred to as a hypervisor, manages the sharing (by virtual machines) of physical resources of an underlying physical machine. Virtualized environments have also been implemented in storage systems. In such a virtualized environment, virtual machines are provided with respective engines for accessing storage devices of the storage system. For example, a virtual machine can be provided with an engine that implements a RAID (redundant array of inexpensive disks) architecture.
Conventionally, in a system having multiple virtual machines with different guest operating systems, multiple different RAID engines may have to be provided for the different operating systems. However, this is inefficient since software development of RAID engines is made more complex due to dependencies on different operating systems.